package completablefuture;

import java.util.concurrent.CompletableFuture;

public class CompletableFutureDemo {
    /*
    1、任务异步化
        CompletableFuture允许任务在后台线程中异步执行，不会阻塞主线程。

        使用 runAsync() 方法执行任务是没有返回值的，而通过 supplyAsync() 方法执行任务则支持返回值，可以通过 get() 和 join() 方法获取。
        两者区别是，get() 方法抛出检查时异常，程序必须进行处理，而 join() 方法抛出运行时异常，程序可不做处理。
    * */
    public static void main(String[] args) {
        CompletableFuture<Void> future1 = CompletableFuture.runAsync(() -> System.out.println("没有返回值的异步任务"));
        CompletableFuture<String> future2 = CompletableFuture.supplyAsync(() -> "有返回值的异步任务");
        System.out.println("2="+future2.join());
        System.out.println(future1);
        System.out.println("--------");
    }
}
